-- ToME - Tales of Maj'Eyal
-- Copyright (C) 2009, 2010, 2011, 2012 Nicolas Casalini
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
--
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org
local q = game.player:hasQuest("lost-merchant")
if q and q:isStatus(q.COMPLETED, "saved") then

newChat{ id="welcome",
	text = [[Ах, мой #{italic}#лучший#{normal}# друг @playername@!
Благодаря тебе я безопасно добрался до этого города! Теперь я собираюсь открыть здесь самый лучший бутик в мире, но помни, что я твой должник, и если тебе понадобятся редкие товары, может быть, для тебя я смогу открыть его пораньше.]]
..(game.state:isAdvanced() and "\nО, мой друг, это хорошая новость! Как я сказал, ты теперь можешь попросить по-настоящему #{italic}#уникальный#{normal}# предмет, который я сделаю специально для тебя. За по-настоящему уникальную цену..." or "\nИ я хочу предоставлять по-настоящему уникальные услуги для самых взыскательных клиентов. Если ты зайдёшь позже, я ту полностью всё закончу и смогу сделать для тебя кое-что удивительное. Как ты понимаешь, по по-настоящему #{italic}#подходящей#{normal}# цене."),
	answers = {
		{"Да, пожалуйста покажи мне свои товары.", action=function(npc, player)
			npc.store:loadup(game.level, game.zone)
			npc.store:interact(player)
		end},
		{"Что ты говорил про уникальный предмет?", cond=function(npc, player) return game.state:isAdvanced() end, jump="unique1"},
		{"Прошу прощения, мне нужно идти!"},
	}
}

newChat{ id="unique1",
	text = [[Обычно я предлагаю эту услугу по действительно высокой цене, но для тебя, мой друг, я готов сделать скидку в 20% и это обойдётся тебе #{italic}#всего лишь#{normal}# в 4000 монет. За эти деньги я сделаю любой уникальный предмет по твоему выбору. Что скажешь?]],
	answers = {
		{"Какая мизерная сумма, прими мой заказ, торгаш, да побыстрее!", cond=function(npc, player) return player.money >= 10000 end, jump="make"},
		{"Да, пожалуйста!", cond=function(npc, player) return player.money >= 4000 end, jump="make"},
		{"СКОЛЬКО?! Прошу прощения, мне... мне нужно отдышаться...", cond=function(npc, player) return player.money < 500 end},
		{"Не сейчас, спасибо."},
	}
}

local maker_list = function()
	local bases = {
		"elven-silk robe",
		"drakeskin leather armour",
		"voratun mail armour",
		"voratun plate armour",
		"elven-silk cloak",
		"drakeskin leather gloves",
		"voratun gauntlets",
		"elven-silk wizard hat",
		"drakeskin leather cap",
		"voratun helm",
		"pair of drakeskin leather boots",
		"pair of voratun boots",
		"drakeskin leather belt",
		"voratun ring",
		"voratun amulet",
		"dwarven lantern",
		"voratun battleaxe",
		"voratun greatmaul",
		"voratun greatsword",
		"voratun waraxe",
		"voratun mace",
		"voratun longsword",
		"voratun dagger",
		"dragonbone longbow",
		"drakeskin leather sling",
		"voratun shield",
		"dragonbone staff",
		"living mindstar",
	}
	local l = {}
	for i, name in ipairs(bases) do
		local not_ps = player:attr("forbid_arcane") and {arcane=true} or {antimagic=true}
		local force_themes = player:attr("forbid_arcane") and {'antimagic'} or nil

		local o, ok
		repeat
			o = game.zone:makeEntity(game.level, "object", {name=name, ingore_material_restriction=true, no_tome_drops=true, ego_filter={keep_egos=true, ego_chance=-1000}}, nil, true)
			if o then ok = true end
			if o and o.power_source and player:attr("forbid_arcane") and o.power_source.arcane then ok = false end
		until ok
		if o then
			l[#l+1] = {o:getName{force_id=true, do_color=true, no_count=true}, action=function(npc, player)
				local art, ok
				local nb = 0
				repeat
					art = game.state:generateRandart{base=o, lev=70, egos=4, force_themes=force_themes, forbid_power_source=not_ps}
					if art then ok = true end
					if art and art.power_source and player:attr("forbid_arcane") and art.power_source.arcane then ok = false end
					nb = nb + 1
					if nb == 40 then break end
				until ok
				if art and nb < 40 then
					art:identify(true)
					player:addObject(player.INVEN_INVEN, art)
					player:incMoney(-4000)
					-- clear chrono worlds and their various effects
					if game._chronoworlds then
						game.log("#CRIMSON#Путешествие во времени невозможно в предварительно созданных местах, таких, как это.")
						game._chronoworlds = nil
					end
					game:saveGame()

					newChat{ id="naming",
						text = "Ты хочешь назвать свою вещь?\n"..tostring(art:getTextualDesc()),
						answers = {
							{"Yes, please.", action=function(npc, player)
								local d = require("engine.dialogs.GetText").new("Name your item", "Name", 2, 40, function(txt)
									art.name = txt:removeColorCodes():gsub("#", " ")
									game.log("#LIGHT_BLUE#The merchant carefully hands you: %s", art:getName{do_color=true})
								end, function() game.log("#LIGHT_BLUE#The merchant carefully hands you: %s", art:getName{do_color=true}) end)
								game:registerDialog(d)
							end},
							{"No thanks.", action=function() game.log("#LIGHT_BLUE#Купец с почтением вручает тебе: %s", art:getName{do_color=true}) end},
						},
					}
					return "naming"
				else
					newChat{ id="oups",
						text = "О, прошу прощения, кажется мы не сможем сделать то, что вы просите.",
						answers = {
							{"О, тогда я выберу что-то другое.", jump="make"},
							{"Хорошо, может быть, в другой раз."},
						},
					}
					return "oups"
				end
			end}
		end
	end

	return l
end

newChat{ id="make",
	text = [[Which kind of item would you like ?]],
	answers = maker_list(),
}

else

newChat{ id="welcome",
	text = [[*This store does not appear to be open yet*]],
	answers = {
		{"[leave]"},
	}
}

end

return "welcome"
